package com.i2863.receipt.service;

import com.i2863.receipt.entity.Activity;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * Created by Administrator on 2018/6/8.
 */
public interface ActivityService {

    /**
     * id查询
     * @param id
     * @return
     */
    Activity findOne(Integer id);

    /**
     * 添加一条
     * @param activity
     */
    void add(Activity activity);

    /**
     *
     * @param list
     */
    void del(List<Activity> list);

    /**
     * 更新一条数据
     * @param activity
     */
    void update(Activity activity);

    /**
     * 根据站点code查询所有的活动（按期数排倒叙）
     * @param site
     * @return
     */
    List<Activity> findListBySiteId(Integer site);

    /**
     * 后台活动列表 分页查询
     * @param siteId 站点ID
     * @param pageSize 每页条数
     * @param pageNum 页码
     * @param activityName 活动名称
     * @return
     */
    Page<Activity> queryByPage(Integer siteId, Integer pageSize, Integer pageNum, String activityName, String startTime, String endTime);

    /**
     *按当前时间查询当前站点下当期活动
     */
    List<Activity> findOneByNow(Integer siteId);

    /**
     * 通过id获取发票抽奖活动
     * @param id 发票抽奖活动id
     * @return  活动
     */
    Activity findOneById(Integer id);

    /**
     * 查询站点下的活动总数
     * @param siteId
     * @return
     */
    Integer countBySiteId(Integer siteId);

    /**
     * 获取最大的活动期数
     * @return
     */
    Integer getMaxActivityNum(Integer siteId);

    /**
     * 传入id集合  返回实体集合
     * @param ids
     * @return
     */
    List<Activity> findListByIds(List<Integer> ids);

    /**
     * 抽奖活动退回到开始
     * @param activityId 活动id
     */
    void   reset(Integer activityId);


    /**
     * 清楚场内的用户信息，活动从抽出入围的用户之后开始
     * @param activityId 活动id
     */
    void   resetInside(Integer activityId);

    /**
     * 清除所有中奖信息。活动退回到抽出场内用户之后开始
     * @param activityId 活动id
     */
    void resetLottery(Integer activityId);

    /**
     * 设置活动状态为结束（状态=3）
     * @param activityId
     */
    void finishActivity(Integer activityId);


}
